package weaver.interfaces.jjy.duss.util;

import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

/**
 * @program: ecology-9-demo
 * @description: getImageFile
 * @author: Dusongsong
 * @create: 2019-12-20
 */
public class DownloadPicUtil {

    //下载图片
    public static void downloadPicture(String srcUrl,String destPath) {
        URL url = null;
            try {
            //unZip(file,destPath);
            url = new URL(srcUrl);
            DataInputStream dataInputStream = new DataInputStream(url.openStream());

            FileOutputStream fileOutputStream = new FileOutputStream(new File(destPath));
            ByteArrayOutputStream output = new ByteArrayOutputStream();

            byte[] buffer = new byte[1024];
            int length;

            while ((length = dataInputStream.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }
            fileOutputStream.write(output.toByteArray());
            dataInputStream.close();
            fileOutputStream.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
     /*
     *@Description: 解压文件
     *@Param: [srcFile, destDirPath] -zip源文件,-解压后的目标文件夹
     *@return: void
     *@Author: Dusongsong
     *@Date: 2019/12/21
     */
    public static void unZip(String srcPath, String destDirPath) throws RuntimeException {
        File srcFile = new File(srcPath);
        long start = System.currentTimeMillis();
        if(!srcFile.exists()){
            throw new RuntimeException(srcFile.getPath() + "所指文件不存在");
        }
        //开始解压
        ZipFile zipFile = null;
         try{
             zipFile = new ZipFile(srcFile);
             Enumeration<?> entries = zipFile.entries();
             while (entries.hasMoreElements()){
                 ZipEntry entry = (ZipEntry) entries.nextElement();
                 System.out.println("解压" + entry.getName());
                 // 如果是文件夹，就创建个文件夹
                 if(entry.isDirectory()){
                     String dirPath = destDirPath + "/" + entry.getName();
                     File dir = new File(dirPath);
                     dir.mkdirs();
                 }else {
                     // 如果是文件，就先创建一个文件，然后用io流把内容copy过去
                     File targetFile = new File(destDirPath + "/" + entry.getName());
                     // 保证这个文件的父文件夹必须要存在
                     if(!targetFile.getParentFile().exists()) {
                         targetFile.getParentFile().mkdirs();
                     }
                     targetFile.createNewFile();
                     // 将压缩文件内容写入到这个文件中
                     InputStream is = zipFile.getInputStream(entry);
                     FileOutputStream fos = new FileOutputStream(targetFile);
                     int len;
                     byte[] buf = new byte[1024];
                     while ((len = is.read(buf)) != -1) {
                         fos.write(buf, 0, len);
                     }
                     // 关流顺序，先打开的后关闭
                     fos.close();
                     is.close();
                 }
             }
             long end = System.currentTimeMillis();
             System.out.println("解压完成，耗时：" + (end - start) +" ms");
         }catch (Exception e){
             throw new RuntimeException("unzip error from ZipUtils", e);
         }finally {
             if(zipFile !=null){
                 try {
                    zipFile.close();
                 }catch (IOException e){
                     e.printStackTrace();
                 }
             }
         }
    }


    public static void main(String[] args) {
        String url = "file:///D:/Download/timg.jpg";
        String path="/D:/Download/pic.jpg";
        downloadPicture(url,path);
      /* String srcPath = "/D:/Download/timg.jpg";
        String destpath="\\Download";
        unZip(srcPath,destpath);*/


    }


}
